home *** CD-ROM | disk | FTP | other *** search
- # some useful commands for debugging emacs with gdb 4.* or better
-
- set print union off
- set print pretty off
-
- define temacs
- run -batch -l loadup.el run-temacs -q
- end
-
- echo \n>>> Use the `temacs' command to run temacs\n\n
-
- # if you use Purify, do this:
- # set env PURIFYOPTIONS -pointer-mask=0x0fffffff
-
- # was frob, but p1 is short for prin1
- define p1
- #call = Fprin1 ($tem, Qexternal_debugging_output)
- # compensate for GDB struct-passing bug
- set debug_temp = $
- call debug_print (&debug_temp)
- printf "\n"
- end
-
- define lbt
- # "&" to compensate for GDB struct-passing bug
- call Fbacktrace (&Qexternal_debugging_output, &Qt)
- end
-
-
- set $vector_length_mask = ~(1<<31)
-
- define xtype
- # this is really xgctype, as we mask off the mark bit
- output (enum Lisp_Type) ($.gu.type)
- echo \n
- end
-
- define xint
- # it would be nice to sign-extend this...
- print (int)$.s.val
- end
-
- define xmarkbit
- print $.gu.markbit
- end
-
- define xrecord
- print (struct lrecord_header *) $.gu.val
- output *($->implementation)
- echo \n
- end
-
- define xcons
- print (struct Lisp_Cons *) $.gu.val
- end
-
- define xbuffer
- print (struct buffer *) $.gu.val
- end
-
- define xglyph
- print (struct Lisp_Glyph *) $.gu.val
- end
-
- define xspec
- print (struct Lisp_Specifier *) $.gu.val
- end
-
- define xvector
- print (struct Lisp_Vector *) $.gu.val
- end
-
- define xsubr
- print (struct Lisp_Subr *) $.gu.val
- end
-
- define xstring
- print (struct Lisp_String *) $.gu.val
- output (char *) $->_data
- echo \n
- end
-
- define nilp
- print $ == Qnil
- end
-
- define xmarker
- print (struct Lisp_Marker *) $.gu.val
- end
-
- define xwindow
- print (struct window *) $.gu.val
- end
-
- define xprocess
- print (struct Lisp_Process *) $.gu.val
- end
-
- define xevent
- print (struct Lisp_Event *) $.gu.val
- end
-
- define xkeymap
- print (struct keymap *) $.gu.val
- end
-
- define xframe
- print (struct frame *) $.gu.val
- end
-
- define xbytecode
- print (struct Lisp_Bytecode *) $.gu.val
- end
-
- define xextent
- print (struct extent *) $.gu.val
- end
-
- define xhashtable
- print (struct hashtable_struct *) $.gu.val
- end
-
- define xpixmap
- print (struct Lisp_Pixmap *) $.gu.val
- end
-
- define xfont
- print (struct Lisp_Font *) $.gu.val
- end
-
- define car
- set $tem = ((struct Lisp_Cons *) $.gu.val)->car
- end
-
- define cdr
- set $tem = ((struct Lisp_Cons *) $.gu.val)->cdr
- end
-
- define string-length
- print ((struct Lisp_String *) $.gu.val)->_size & $vector_length_mask
- end
-
- define string-contents
- print (char *) ((struct Lisp_String *) $.gu.val)->_data
- end
-
- define vector-length
- print ((struct Lisp_Vector *) $.gu.val)->size & $vector_length_mask
- end
-
- define vector-contents
- set $tem = (struct Lisp_Vector *) $.gu.val
- print *($tem->contents) @ ($tem->size & $vector_length_mask)
- set $ = $tem->contents
- end
-
- define symbol-name
- set $tem = ((struct Lisp_Symbol *) $.gu.val)->name
- # output *($tem->_data) @ ($tem->_size & $vector_length_mask)
- output ($tem->_data)
- echo \n
- set $type = Lisp_String
- echo \n
- end
-
- define xsymbol
- symbol-name
- end
-
- define symbol-value
- set $tem = ((struct Lisp_Symbol *) $.gu.val)->value
- end
-
- define symbol-function
- set $tem = ((struct Lisp_Symbol *) $.gu.val)->function
- end
-
- define symbol-plist
- set $tem = ((struct Lisp_Symbol *) $.gu.val)->plist
- end
-
- define wtype
- p $->core.widget_class->core_class.class_name
- end
-
- define xtname
- print XrmQuarkToString(((Object)($))->object.xrm_name)
- end
-
- #
- # GDB, with the losing command-line parser that it has,
- # cannot handle nested blocks.
- #
- define breaks
-
- br Fsignal
- # command
- # bt 3
- # p sig
- # xsymbol
- # end
-
- br Fkill_emacs
- # command
- # bt 3
- # end
-
- br assertion_failed
- # command
- # bt 3
- # end
-
- end
-